package negocio;

import base.ConjuntoEMail;
import dados.Arquivo;
import dados.LeitorDados;
import dados.SeparadorDados;
import org.jfree.data.statistics.*;

public class EMailParser {
	
	private Arquivo arq;
	private String[] palavras;
	
	public EMailParser(){
		palavras = new String[48];
		palavras[0] = "make";
		palavras[1] = "address";
		palavras[2] = "all";
		palavras[3] = "3d";
		palavras[4] = "our";
		palavras[5] = "over";
		palavras[6] = "remote";
		palavras[7] = "internet";
		palavras[8] = "order";
		palavras[9] = "mail";
		palavras[10] = "recieve";
		palavras[11] = "will";
		palavras[12] = "people";
		palavras[13] = "report";
		palavras[14] = "addresses";
		palavras[15] = "free";
		palavras[16] = "business";
		palavras[17] = "mail";
		palavras[18] = "you";
		palavras[19] = "credit";
		palavras[20] = "your";
		palavras[21] = "font";
		palavras[22] = "000";
		palavras[23] = "money";
		palavras[24] = "hp";
		palavras[25] = "hpl";
		palavras[26] = "george";
		palavras[27] = "650";
		palavras[28] = "lab";
		palavras[29] = "labs";
		palavras[30] = "telnet";
		palavras[31] = "857";
		palavras[32] = "data";
		palavras[33] = "415";
		palavras[34] = "85";
		palavras[35] = "technology";
		palavras[36] = "1999";
		palavras[37] = "parts";
		palavras[38] = "pm";
		palavras[39] = "direct";
		palavras[40] = "cs";
		palavras[41] = "meeting";
		palavras[42] = "original";
		palavras[43] = "project";
		palavras[44] = "re";
		palavras[45] = "edu";
		palavras[46] = "table";
		palavras[47] = "conference";
	}
	
	public double[] parseMail(){
		double[] retorno = new double[56];
		int[] aux = new int[56];
		int contaPalavras = 0;
		arq = new Arquivo("mail.in", "mail.out");
		
		while(!arq.isEndOfFile()){
			String a = arq.readString();
			for(int i = 0; i < palavras.length; i++){
				contaPalavras++;
				if (a.equalsIgnoreCase(palavras[i])){
					aux[i]++;
				}
			}
		}
		
		for (int i = 0; i < 56; i++){
			retorno[i] = ((double)aux[i]/(double)contaPalavras)*100;
		}
		return retorno;
	}
	
	public boolean[] testeHipotese() {
		EMailParser mail = new EMailParser();
		double[] frequencias = mail.parseMail();
		boolean[] retorno = new boolean[48];
		for (int i = 0; i < palavras.length; i++){
			LeitorDados leitor = new LeitorDados();
			ConjuntoEMail emails = new ConjuntoEMail();
			emails = leitor.processar();
			Double[] dados = SeparadorDados.retornaDados(SeparadorDados.TIPO_NAOSPAM,i,emails);
			
			double xBarrado = Statistics.calculateMean(dados);
			double miZero = frequencias[i];
			double S = Statistics.getStdDev(dados);
			double n = Math.sqrt(dados.length);
			System.out.println(S);
			System.out.println(xBarrado);
			System.out.println();
			
			double z = (xBarrado - miZero)/(S/n);
			
			if (z >= 1.64 || z <= -1.64){
				retorno[i] = false;
			} else {
				retorno[i] = true;
			}
		}
		return retorno;
	}
	
	public static void main(String args[]){
		EMailParser parser = new EMailParser();
		boolean[] oops = parser.testeHipotese();
		int x = 0;
		x++;
	}
	
}
